//******************************************************************** // KJH/HS 02.02.06 // Tabellimplementasjon av en stabel. //******************************************************************** import java.util.Iterator; class TabellStabel implements StabelADT { private final int MAKS = 100; private int topp; // indikerer neste plass private T[] stabel; /******************************************************************* Oppretter en tom stabel. *******************************************************************/ public TabellStabel() { topp = 0; stabel = (T[])(new Object[MAKS]); } /******************************************************************* Oppretter en tom stabel med en speisfisert kapasitet. *******************************************************************/ public TabellStabel(int startKapasitet) { topp = 0; stabel = (T[])(new Object[startKapasitet]); } /******************************************************************* Legger til det spesifiserte elementet på toppen av stabelen, utvider kapasitetet til stabelen hvis nødvendig. *******************************************************************/ public void push (T element) { if (antall() == stabel.length) utvid(); stabel[topp] = element; topp++; } /******************************************************************* Fjerner toppelemntet og returnerer en refernase til den. Hvis stabelen er tom fra før, så returneres null *******************************************************************/ public T pop(){ T resultat = null; if (!erTom()){ topp--; resultat = stabel[topp]; stabel[topp] = null; } return resultat; } /******************************************************************* Returnerer toppelementet uten å fjerne det.. Hvis stabelen er tom fra før, så returneres null *******************************************************************/ public T peek() { if (erTom()) return null; else return stabel[topp-1]; } /******************************************************************* Returnerer sann hvis stabelen er tom og usann ellers. *******************************************************************/ public boolean erTom() { return (topp == 0); } /******************************************************************* Returnerer antall elementer. *******************************************************************/ public int antall() { return topp; } /******************************************************************* Returns en strenrepresentasjon av stabelen.. *******************************************************************/ public String toString() { String resultat = ""; for (int søk=0; søk < topp; søk++) resultat = resultat + stabel[søk].toString() + "\n"; return resultat; } /******************************************************************* Oppretter en ny tabell for å lagre innholdet. *******************************************************************/ private void utvid() { T[] hjelpeTabell = (T[])(new Object[stabel.length*2]); for (int indeks =0; indeks < stabel.length; indeks++) hjelpeTabell[indeks] = stabel[indeks]; stabel = hjelpeTabell; } }